<?php

namespace app\admin\controller;

use support\Request;
use think\facade\Db;
use think\facade\Cache;
use think\Exception;
use app\BaseController as Controller;

/**
 * 公共的方法
 */
class CommonController extends Controller
{
    /**
     * 验证码
     */
    public function captcha(Request $request)
    {
        $param = $request->all();
        if (isset($param['api']) && $param['api'] == 0) {
            $param['api'] = false;
            return \app\common\service\Verify::entry($param);
        }

        $param['api'] = true;
        $captcha = \app\common\service\Verify::entry($param);
        return json([
            'code' => 200,
            'data' => [
                'key' => $captcha['key'],
                'src' => $captcha['data'],
                'switch' => true, // 是否启用
            ]
        ]);
    }

    /**
     * 清除缓存
     */
    public function delCache(Request $request)
    {
        // 清理缓存
        // 清除admin标签的缓存数据
        Cache::tag('admin')->clear();

        //header('Location: ' . $_SERVER['HTTP_REFERER']);
        return $this->success('清除缓存成功！');
    }

    /**
     * 文件上传
     */
    public function upload(Request $request)
    {
        if ($request->method() == 'POST') {
            $method = $request->input('method');

            $respJson = \app\common\service\Uploader::upload($request);
            $result = json_decode($respJson->rawBody(), true);
            if ($method == 'layui') {
                // layui 编辑器 上传
                return json([
                    'code' => 0, // 0表示成功，其它失败
                    'msg' => '上传成功',
                    'filepath' => $result['filepath'],
                    'data' => [
                        'src' => $result['full_filepath'],
                        'title' => ''
                    ]
                ]);
            } elseif ($method == 'tinymce') {
                // tinymce 编辑器 上传
                return json([
                    'code' => 1, // 1表示成功，其它失败
                    'msg' => '上传成功',
                    'location' => $result['full_filepath'],
                    'data' => [
                        'src' => $result['full_filepath'],
                        'title' => ''
                    ]
                ]);
            }

            return $respJson;
        }
    }

    /**
     * 文件下载
     */
    public function download(Request $request)
    {
        $file_url = $request->input('file');
        $file_url = urldecode($file_url);
        $file_name = basename($file_url);
        // 只能下载本地文件
        return response()->download($file_url, $file_name);
    }

    /**
     * Ajax 修改指定表数据字段  一般修改状态 比如 是否推荐 是否开启 等 图标切换的
     * table,id_name,id_value,field,value
     */
    public function changeTableVal(Request $request)
    {
        $params = $request->all();

        $table = $params['table']; // 表名
        $idName = $params['id_name']; // 表主键id名
        $idValue = $params['id_value']; // 表主键id值
        $field = $params['field']; // 修改哪个字段
        $value = $params['value']; // 修改字段值

        // 根据条件保存修改的数据
        Db::name($table)->where([$idName => $idValue])->save([$field => $value]);
    }
}
